﻿namespace EFS.RC.SupervisorCentral.Common.Config.Sections.Monitoring.Thresholds
{
	/// Reads Thresholds section
	public class All
	{
		/// <summary>
		/// phone
		/// </summary>
		System.String phone = null;

		/// Private constructor
		public All(System.String phone)
		{
			// check
			EFS.Common.Verify.String(phone, "phone");

			// keep
			this.phone = phone;

			// load config
			LoadConfig(phone);
		}

		#region Properties

		/// Property ACD_AvailableCount: Get, Set
		public Threshold ACD_AvailableCount { get; private set; }

		/// Property ACD_BusyInHuntCount: Get, Set
		public Threshold ACD_BusyInHuntCount { get; private set; }

		/// Property ACD_LWTSeconds: Get, Set
		public Threshold ACD_LWTSeconds { get; private set; }

		/// Property ACD_BusyInWrap: Get, Set
		public Threshold ACD_BusyInWrap { get; private set; }

		/// Property ACD_BusyNotInHuntCount: Get, Set
		public Threshold ACD_BusyNotInHuntCount { get; private set; }

		/// Property ACD_OfflineCount: Get, Set
		public Threshold ACD_OfflineCount { get; private set; }

		/// Property NotACD_OfflineCount: Get, Set
		public Threshold NotACD_OfflineCount { get; private set; }

		/// Property NotACD_OnlineCount: Get, Set
		public Threshold NotACD_OnlineCount { get; private set; }

		#endregion

		/// Loads the configuration
		private void LoadConfig(System.String phone)
		{
			// ACD_AvailableCount
			ACD_AvailableCount = new Threshold(System.String.Format("{0} ACD_AvailableCount", phone));

			// ACD_BusyInHuntCount
			ACD_BusyInHuntCount = new Threshold(System.String.Format("{0} ACD_BusyInHuntCount", phone));

			// ACD_LWTSeconds
			ACD_LWTSeconds = new Threshold(System.String.Format("{0} ACD_LWTSeconds", phone));

			// ACD_BusyInWrap
			ACD_BusyInWrap = new Threshold(System.String.Format("{0} ACD_BusyInWrap", phone));

			// ACD_BusyNotInHuntCount
			ACD_BusyNotInHuntCount = new Threshold(System.String.Format("{0} ACD_BusyNotInHuntCount", phone));

			// ACD_OfflineCount
			ACD_OfflineCount = new Threshold(System.String.Format("{0} ACD_OfflineCount", phone));

			// NotACD_OfflineCount
			NotACD_OfflineCount = new Threshold(System.String.Format("{0} NotACD_OfflineCount", phone));

			// NotACD_OnlineCount
			NotACD_OnlineCount = new Threshold(System.String.Format("{0} NotACD_OnlineCount", phone));
		}
	}

}